//
//  DynamicCommand.swift
//  ArchitectGenerics
//
//  Created by 姚胜龙 on 2017/6/8.
//  Copyright © 2017年 姚胜龙. All rights reserved.
//

import UIKit

//动态调用命令
class DynamicCommand: TetrisCommandProtocal {

    private var reciver:TetrisMeshine?
    private var instruction:(TetrisMeshine)->Void?

    //第一个参数是：接受者
    //第二个参数是：回调（通过闭包的形式去执行具体的代码块）:因为动态调用的时候并不知道具体执行哪一个

    init(reciver:TetrisMeshine, instruction:@escaping (TetrisMeshine)->Void)
    {
        self.reciver = reciver
        self.instruction = instruction
    }

    func execute() {
        self.instruction(self.reciver!)
    }

    //提供一个动态创建的命令
    class func createCommand(reciver:TetrisMeshine, instruction:@escaping (TetrisMeshine)->Void) -> TetrisCommandProtocal {
        return DynamicCommand(reciver: reciver, instruction: instruction)
    }

}
